﻿/*简单工厂设计模式又叫静态工厂方法，它不属于23种设计模式之一
主要是由工厂决定创建出哪一种产品的实例，是工厂模式家族中最简单的模式*/
using _02简单工厂设计模式;

Console.WriteLine("简单工厂设计模式!");
Console.WriteLine("请输入操作数1");
var d1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入操作数2");
var d2 = Convert.ToDouble(Console.ReadLine());
ICalculator calculator = null;
Console.WriteLine("请输入操作符");
string flag=Console.ReadLine();
//switch (flag)
//{
//    case "*":
//        calculator = new Mul();
//        break;
//        case "+":   
//        calculator = new Add();
//        break;
//        case"-":
//       calculator = new Sub();
//        break;
//        case"/":
//        calculator = new Div();
//        break;
//}
calculator= CalFactory.GetCalculator(flag);   
double reslut= calculator.GetResult(d1,d2);
Console.WriteLine(reslut);
/* 优点：1、简单工厂设计模式解决了客户端直接依赖具体对象的问题，客户端消除了创建对象的责任，仅仅承担使用的责任。简单工厂模式实现了对责任的分割
 2、简单工厂起到了代码复用的作用
 */
/*
 缺点：
1、系统扩展困难，一旦加入新功能，就必须要修改工厂逻辑。破坏了开闭原则
2、简单工厂集合了多有创建对象的逻辑，一旦不能正常工作，会导致整个系统出问题
 */